//导入数据库配置对象
const db=require("../db/index")

//导入bycrypt包加密与解析密码
const bcrypt=require("bcryptjs")
const e = require("express")

//用户路由接口的处理函数
exports.getUserinfo=(req,res)=>{
    const sqlstr1="select id,username,nickname,user_pic,email from ev_users where id=?"
    //当express-jwt解析token成功后，会将用户信息挂载到req的user中
    db.query(sqlstr1,[req.user.id],(err,results)=>{
        if(err) 
            return res.cc(err) //sql执行错误
        if(results.length<1) 
            return res.cc("未找到用户信息") //未找到用户信息
        //执行成功，返回结果
        res.send({
            status:0,
            message:"查询成功!",
            data:results[0]
        })
    })
}

//更改用户信息处理接口
//处理流程
//1.利用第三方包做表单校验
//2.修改数据
exports.updateUserinfo=(req,res)=>{
    const sqlstr2="update ev_users set ? where id=?"
    db.query(sqlstr2,[req.body,req.body.id],(err,results)=>{
        if(err)
            return res.cc(err)
        if(results.affectedRows!==1)
            return res.cc("数据更新失败")
        res.send({
            status:0,
            message:"数据更新成功",
        })        
    })
}


//更改用户密码
//处理流程
//1.利用第三方包做新旧密码校验
//2.判断该用户是否存在
//3.判断旧密码与数据库中的密码是否一致
//4.修改数据
exports.updatePwd=(req,res)=>{
    //流程1以完成
    //流程2，判断该用户是否存在
    const sqlstr3="select * from ev_users where id=?"
    db.query(sqlstr3,req.user.id,(err,results)=>{
        if(err) 
            return res.cc(err)
        if(results.length!==1)
            return res.cc("未找到相关用户!")
        //流程三，判断旧密码与数据库密码是否相同
        const comparePwd=bcrypt.compareSync(req.body.oldPwd,results[0].password)      
        if(!comparePwd)
            //密码不同，则报错
            return res.cc("旧密码错误")     
        //流程4，修改数据库
        const sqlstr4="update ev_users set password=? where id=?" 
        //将密码加密
        const newPwd = bcrypt.hashSync(req.body.newPwd, 10)
        db.query(sqlstr4,[newPwd,req.user.id],(err,results)=>{
            if(err)
                return res.cc(err)
            if(results.affectedRows!==1)
                return res.cc("密码更新错误!")    
        })    
        res.send({
            status:0,
            message:'密码修改成功!'
        })
    })
}

//修改用户头像
//1.做表单验证
//2.添加数据
exports.updateAvatar=(req,res)=>{
    //第一步已完成
    //第二步修改头像
    const sqlstr5="update ev_users set user_pic=? where id=?"
    db.query(sqlstr5,[req.body.avatar,req.user.id],(err,results)=>{
        if(err)
            return res.cc(err)
        if(results.affectedRows!==1)
            return res.cc("修改头像失败!")
        //修改成功
        res.send({status:0,message:'修改头像成功'})        
    })
}